package de.fhin.mas.agents.gripper.behaviours;

import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
import de.fhin.mas.MASEvents;
import de.fhin.mas.agents.gripper.GripperAgent;

public class MoveGrapplerToTransportPosition extends OneShotBehaviour {

	private static final long serialVersionUID = 8259644713189203328L;

	private final GripperAgent gripperAgent;
	private final CheckObjectLost checkObjectLost;

	public MoveGrapplerToTransportPosition(Agent superAgent) {
		super(superAgent);
		gripperAgent = (GripperAgent) superAgent;
		checkObjectLost = new CheckObjectLost();
	}

	/**
	 * Bewegt den, mit dem Objekt beladenen Greifarm in Transportposition
	 */
	public void moveGrappler() {
		// Versucht den Greifarm in Transportposition zu bringen. Liefert zufällig den Rückgabewert true oder false
		// gripperAgent.getRandomBoolean()
		if (true) {
			gripperAgent.printLn("Object loaded. Grappler in transport-position");

			ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
			msg.setConversationId(MASEvents.OBJECT_LOADED.getName());
			((GripperAgent) myAgent).sendToAll(msg);

			gripperAgent.setGrapplerStatus("TRANSPORT");
			// Überprüft, ob das Objekt verloren wurde
			checkObjectLost.startstop(true);
		} else {
			gripperAgent.printLn("Error: Unable to move Grappler to transport-position!");
		}
	}

	@Override
	public void action() {
		moveGrappler();
	}

	@Override
	public int onEnd() {
		return 0;
	}
}
